package projeto.administrativo.servico.cih;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import nucleo.comuns.visao.NucleoTab;
import plataforma.cih.PainelDuploListboxOrdenadoDragAndDrop;
import projeto.administrativo.atividade.cdp.KAtividade;
import projeto.administrativo.servico.cdp.OrdemKServicoKAtividade;

public class AbaKAtividade extends NucleoTab {

	PainelDuploListboxOrdenadoDragAndDrop painelKAtividade;

	public AbaKAtividade() {

		montar();
	}

	private void montar() {
		setNomeTab("Atividades");

		painelKAtividade = new PainelDuploListboxOrdenadoDragAndDrop() {

			@Override
			public String recuperarLabel(Object obj) {
				KAtividade kAtividade = (KAtividade) obj;

				return kAtividade.getDescricao();
			}
		};

		setConteudoTab(painelKAtividade);

	}

	public boolean isValid() {

		return true;
	}

	public void setKAtividade(Set<KAtividade> kAtividades,
			List<KAtividade> todosObjetosCadastrados) {
		// converter set pra lista
		List<KAtividade> listSelecionados = new ArrayList<KAtividade>(
				kAtividades);
		painelKAtividade.preencherComDados(todosObjetosCadastrados,
				listSelecionados, new ComparadorKAtividade());

	}

	public void setKAtividadeOrdenadas(
			List<OrdemKServicoKAtividade> list,
			List<KAtividade> todosObjetosCadastrados) {
		// converter set pra lista
		List<KAtividade> listSelecionados = new ArrayList<KAtividade>();
		for (OrdemKServicoKAtividade ordem : list) {
			listSelecionados.add(ordem.getkAtividade());
		}

		painelKAtividade.preencherComDados(todosObjetosCadastrados,
				listSelecionados, new ComparadorKAtividade());

	}

	public class ComparadorKAtividade implements Comparator<KAtividade> {

		@Override
		public int compare(KAtividade o1, KAtividade o2) {
			// return (-1) * o1.getDescricao().compareTo(o2.getDescricao());
			return o1.getDescricao().compareTo(o2.getDescricao());
		}

	}

	public List<KAtividade> getKAtividades() {
		return new ArrayList(painelKAtividade.getSelecionados());
	}

}
